"""
一、继承
python面向对象的继承指的是多个类之间的所属关系，即子类默认继承父类的所有属性和函数
在python中，所有类默认继承object类，object类是顶级类或基类。
"""

"""
1、单继承
一个类继承一个父类
"""

"""
在编写类时，并不是每次都要从空白开始。当要编写的类和另一个已经存在的类之间有一定的继承关系时，
就可以通过继承来达到代码重用的目的，提高开发效率。
"""

class Animal:
    name = '动物'

    def say(self):
        print('动物的叫声')


class Dog(Animal):  # 括号中Animal为继承的父类 子类只继承一个父类为单继承

    def see_home(self):
        print('狗可以看家护院')


d = Dog()
d.say()
print(d.name)
d.see_home()

# 子类的对象是子类类型，同时，也是父类的类型
print(type(d))
# isinstance 判断一个对象，是否是某个类型
print(isinstance(d, Dog))  # True
print(isinstance(d, Animal))  # True

# issubclass 判断类，是否是每个父类的子类，之间是否有继承关系
print(issubclass(Dog, Animal))  # True
print(issubclass(Dog, object))  # True
